package com.zjsru.plan2023.oneday;

import java.util.Arrays;

/**
 * @Author: CookLee
 * @Date: 2023/7/27
 * 删除每行中的最大值
 * \
 * 输入：grid = [[1,2,4],[3,3,1]]
 * 输出：8
 * 解释：上图展示在每一步中需要移除的值。
 * - 在第一步操作中，从第一行删除 4 ，从第二行删除 3（注意，有两个单元格中的值为 3 ，我们可以删除任一）。在答案上加 4 。
 * - 在第二步操作中，从第一行删除 2 ，从第二行删除 3 。在答案上加 3 。
 * - 在第三步操作中，从第一行删除 1 ，从第二行删除 1 。在答案上加 1 。
 * 最终，答案 = 4 + 3 + 1 = 8 。
 * \
 * 输入：grid = [[10]]
 * 输出：10
 * 解释：上图展示在每一步中需要移除的值。
 * - 在第一步操作中，从第一行删除 10 。在答案上加 10 。
 * 最终，答案 = 10 。
 *
 */
public class DeleteGreatestValue {
    
    /**
     * 排序：由于是按每行删除最大值，即每个int[]由大到小排序后 从最末尾比较大小开始删除
     *
     * @param grid 网格
     * @return int
     */
    public int deleteGreatestValue(int[][] grid) {
        for (int[] nums:grid) {
            Arrays.sort(nums);
        }
        int sum = 0;
        int len = grid.length, cumLen = grid[0].length;
        //按列比较数字大小，所以先确定列 后确定 行
        for (int i = 0; i < cumLen; i++) {
            int max = 0;
            for(int j = 0; j < len; j++){
                max = Math.max(max,grid[j][i]);
            }
            sum += max;
        }
        return sum;
        
    }
    
    public static void main(String[] args) {
        DeleteGreatestValue deleteGreatestValue = new DeleteGreatestValue();
        int[][] grid = new int[][] {{1, 2, 4}, {3, 3, 1}};
        System.out.println(deleteGreatestValue.deleteGreatestValue(grid));
    }
}
